package ddd.leave.domain.leave.repository.facade;

import ddd.leave.domain.leave.repository.po.LeaveEventPO;
import ddd.leave.domain.leave.repository.po.LeavePO;

import java.util.List;

public interface LeaveRepositoryInterface {

    /**
     * 保存请假单  PO- Persistent Object
     * @param leavePO
     */
    void save(LeavePO leavePO);

    /**
     * 保存请假单事件
     * @param leaveEventPO
     */
    void saveEvent(LeaveEventPO leaveEventPO);

    /**
     * 通过请假单id 查询请假单
     * @param id
     * @return
     */
    LeavePO findById(String id);

    /**
     * 通过 applicantId 查询请假单列表
     * 每个请假单 根据请假id 查询查对应的审批历史记录 填充进去
     * @param applicantId
     * @return
     */
    List<LeavePO> queryByApplicantId(String applicantId);

    /**
     * 通过审批人id 查出他审批过的请假单列表 每个请假单再根据请假单id 填充上该请假单的审批记录
     * @param approverId
     * @return
     */
    List<LeavePO> queryByApproverId(String approverId);

}